<?php
class MemberController extends ApplicationController {
	public $template = "";
	
	public function iniciarSession(){}
	
	public function logearUsuario(){
		$this->set_response("view");
		$this->render(null);
		
		//Agregar backshlash a caracteres especiales 
		$strUser = addslashes($this->post("user"));
		$strPassword = addslashes($this->post("pass"));
		$intGroupId = addslashes($this->post("group"));
		
		//validaciones para evitar datos nulos
		Flash::is_null_field("email", $strUser);
		Flash::is_null_field("clave", $strPassword);
		
		$objMember = $this->Member->find_first("conditions: email_address = '$strUser'");
		
		//Validar existencia de usuario
		if(!isset($objMember) || is_null($objMember) || $objMember == '' || $objMember == null || !strlen($objMember)){
			die(Flash::error("El usuario no existe."));
		}
		
		//Validar si el usuario esta activo
		if($objMember->active == 0){
			die(Flash::error("El usuario no esta activo, para mas informacion, \\ncomuniquese con el administrador."));
		}
		
		//validar que el password sea el mismo
		if($objMember->password != crypt($strPassword, "WebTop_Simbiotica")){
			die(Flash::error("La clave esta mal escrita."));
		}
		
		if($intGroupId == ''){
			$objGroups = $this->Group->getByMemberId($objMember->id, true);
			
			//Validar si esta asociado a un grupo
			if($objGroups == null){
				die(Flash::error("El usuario no esta asociado a un grupo"));
			}
			
			//Saber que grupo pertenece el member
			if(count($objGroups) > 1){
				$arrGroups = array();
				for ($i = 0; $i < count($objGroups); $i++) {
					$arrGroups[$i]["id"] = $objGroups[$i]->id;
					$arrGroups[$i]["name"] = $objGroups[$i]->name;
					$arrGroups[$i]["active"] = $objGroups[$i]->active;
				}
				die("{success:true, groups: ".json_encode($arrGroups)."}");
			}
			$intGroupId = $objGroups[0]->id;
		}
		
		$strSessionId = md5(uniqid(rand(), true));
		
		$objSession = new SessionMember();
		
		$objSession->begin();
		try {
			$objSession->contructor($strSessionId, $objMember->id, $intGroupId);
			$objSession->create();
			$objSession->commit();
			die("{success: true, sessionId: '".$objSession->session_id."'}");
		} catch (Exception $e) {
			$objSession->rollback();
			die(Flash::error("Fallo el inicio de sesion por: ". $e->getMessage()));
		}
	}
}
?>
